RAID technology provides high availability to data, while allowing data integrity even though a disk drive may fail. When there is a failure, the data located on the failed drive must now be re-created using data from the surviving drives. A common RAID configuration is several hard disk drives, where data is written in a "stripe" across the drives, consisting of corresponding data sectors on each drive, in which one of the data sectors stores parity data for the other data sectors in the stripe. Typically, data access processing nodes, e.g., storage processors, are assigned to groups of hard drives so that data access may be coordinated and/or controlled by the processing node. If one of the drives suffers a failure rendering its portion of a stripe unaccessible, the lost data is reconstructed from the other drives via computation methods well known in the art. In configurations having storage processors, such reconstruction may become transparent to the affected host operating system.
In some more complex RAID implementations, dual processing nodes are utilized to give redundancy to the data access. Such a system can easily recover from processor failure. Consequently, prior art methods have explored having more than one processing node accessing RAID arrays. However, these prior art methods usually require that the arrays be accessed in a nonshared state. That is, generally, disk arrays are owned by one or the other of the processing nodes. Ownership may be transferred from one processing node to the other in a failover condition, for example, but at any given time it is known which processing node owns a given disk array.
It is often desirable to provide a host operating system with access to numerous disk arrays. When a host operating system is connected via a private communication link to a processing node, it will only have access to the disk arrays owned by that processing node. The processing node may be housed in a computer with the host operating system or may be a host bus adapter. When processing nodes of this type are used, adding a host to the system requires designating disk arrays for ownership by the new node. The new host cannot gain access to disk arrays while they are owned by the processing nodes of other hosts. One method of increasing the host's access to disk arrays is to provide it with additional private links to additional processing nodes. Another method often used with storage processors as the nodes is to provide a bus wherein multiple hosts may communicate with any of a plurality of processing nodes. This method is used in the Hewlett Packard AutoRaid product. This product houses two storage processors both of which may be accessed on a communication bus by hosts connected to the communication bus. AutoRaid also redundantly gives the two storage processors shared access to the disk arrays. With storage processors, as in AutoRaid, it is easy to add hosts by connecting them onto the bus to the storage processors. The hosts have access to either storage processor and, in AutoRaid, the storage processor has shared access to any of the disk arrays.